package com.example.blog.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.example.blog.entity.BlogType;

public interface BlogTypeMapper {
    /**
     * 通过分类ID查询
     */
    BlogType selectByPrimaryKey(Integer typeId);
    
    /**
     * 查询所有分类
     */
    List<BlogType> selectAll();
    
    /**
     * 通过用户ID查询分类
     */
    List<BlogType> selectByUserId(Integer userId);
    
    /**
     * 通过分类名和用户ID查询
     */
    BlogType selectByTypeNameAndUserId(@Param("typeName") String typeName, @Param("userId") Integer userId);
    
    /**
     * 插入分类记录
     */
    int insert(BlogType blogType);
    
    /**
     * 更新分类记录
     */
    int updateByPrimaryKey(BlogType blogType);
    
    /**
     * 删除分类记录
     */
    int deleteByPrimaryKey(Integer typeId);
    
    /**
     * 删除用户的所有分类
     */
    int deleteByUserId(Integer userId);
    
    /**
     * 检查分类名是否存在（针对同一用户）
     */
    int checkTypeNameExists(@Param("typeName") String typeName, @Param("userId") Integer userId);
    
    /**
     * 统计使用某分类的博客数量
     */
    int countBlogsByTypeId(Integer typeId);
} 